home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import com.commerceone.util.net.MalformedURIException;
- import com.commerceone.xdk.base.parser.DirectorySearchURIDomain;
- import com.commerceone.xdk.base.parser.FileURIDomain;
- import com.extensibility.util.StringUtilities;
- import com.extensibility.xml.dt.DataType;
- import com.extensibility.xml.dt.DataTypeEnumeration;
- import com.extensibility.xml.dt.DataTypeFactory;
- import com.extensibility.xml.dt.DataTypeIntf;
- import com.extensibility.xml.dt.Facet;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.Writer;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- class SOX2Flavor extends BaseFlavor {
- static String NAME = "sox";
- public static final String[] SOX_ALL_TYPES;
- public static final String[] SOX_OTHER_TYPES;
- public static final String[] SOX_SIMPLE_TYPES;
- public static final String[] SOX_ATTR_TYPES;
- static Hashtable soxSourceNames;
-
- SOX2Flavor(SchemaIntf var1) {
- super(var1);
- }
-
- public String getFlavorName() {
- return NAME;
- }
-
- public void parse(URI var1, URI var2, int var3, Object var4) throws IOException {
- try {
- (new SOX2Reader(super.schema)).parse(var1, var2);
- } catch (IOException var6) {
- throw var6;
- }
- }
-
- public void doSecondPassValidation(URI var1) {
- Object var2 = null;
- Object var3 = null;
- String var6;
- URI var7;
- if (var1 == null) {
- var6 = super.schema.getURI().toSource();
- var7 = super.schema.getURI();
- } else {
- var6 = var1.toSource();
- var7 = var1;
- }
-
- if (var6 != null && var6.length() > 0) {
- try {
- (new SOX2cxpValidator(super.schema)).parse(var7);
- } catch (Exception var5) {
- }
- }
-
- }
-
- public void write(Writer var1) throws IOException {
- this.write(var1, super.schema.getURI());
- }
-
- public void write(Writer var1, URI var2) throws IOException {
- (new SOX2Writer(super.schema, var2)).writeDocument(var1);
- }
-
- public String getSourcePreview(BaseDeclaration var1) {
- return (new SOX2Writer(super.schema)).getSourcePreview(var1);
- }
-
- public BaseExemplar createExemplar(SchemaIntf var1) {
- return super.createExemplar(var1);
- }
-
- public boolean isSupported(Class var1) {
- return !var1.equals(Class.forName("com.extensibility.xml.GeneralEntityDeclaration")) && !var1.equals(Class.forName("com.extensibility.xml.InternalGEDeclaration")) && !var1.equals(Class.forName("com.extensibility.xml.ExternalGEDeclaration")) && !var1.equals(Class.forName("com.extensibility.xml.ParameterEntityDeclaration")) && !var1.equals(Class.forName("com.extensibility.xml.InternalPEDeclaration")) && !var1.equals(Class.forName("com.extensibility.xml.ExternalPEDeclaration")) && !var1.equals(Class.forName("com.extensibility.xml.NotationDeclaration"));
- }
-
- private boolean isIntrinsicDtName(String var1) {
- for(int var2 = 0; var2 < SOX_ALL_TYPES.length; ++var2) {
- String var3 = BaseFlavor.getDisplay(this.getFlavorName(), SOX_ALL_TYPES[var2]);
- if (var3.equals(var1)) {
- return true;
- }
- }
-
- return false;
- }
-
- private void checkForErrors(BaseDeclaration var1, DataType var2) {
- }
-
- public void checkForErrors(BaseDeclaration var1) {
- super.checkForErrors(var1);
- if (var1 instanceof ElementDeclaration) {
- ElementDeclaration var2 = (ElementDeclaration)var1;
- ContentModel var3 = var2.getEffectiveModel();
- if (this.isIntrinsicDtName(((BaseDeclaration)var2).getName())) {
- var1.addError(new ParserException(999, "Name should not be an intrinsic datatype name."));
- }
-
- if (var3.isMixed()) {
- var1.addError(new ParserException(999, "Mixed models (text and elements together) are not permitted in SOX schemas."));
- }
-
- if (var2.getAllowsTags() && var3.getRootGroup() != null && var3.getRootGroup().getOccurance() != 0) {
- var1.addError(new ParserException(999, "Top level groups must not have occurrance in SOX Schemas."));
- }
-
- if (var3.isTagsOnly()) {
- }
-
- this.checkForErrors(var1, var2.getDataType());
- } else if (var1 instanceof AttributeDeclaration) {
- AttributeDeclaration var7 = (AttributeDeclaration)var1;
- String var10 = var7.getDataType().toString();
- DataType var4 = var7.getDataType();
- if (var4 == null) {
- var1.addError(new ParserException(999, "Attributes must have a datatype specified in SOX schemas."));
- } else if (var4.hasFacet(Facet.FACET_ENUM_NAME) && (var4.getSource().equalsIgnoreCase(DataTypeIntf.NMTOKEN) || var4.getSource().equalsIgnoreCase(DataTypeIntf.NMTOKENS))) {
- Vector var5 = ((AttributeDeclaration)var1).getChoices();
- if (var5 != null && var5.size() > 0) {
- for(int var6 = 0; var6 < var5.size(); ++var6) {
- if (!DTDParser.isNmToken((String)var5.elementAt(var6))) {
- var1.addError(new ParserException(217, (String)var5.elementAt(var6)));
- }
- }
- } else {
- var1.addError(new ParserException(233, ""));
- }
- }
-
- this.checkForErrors(var1, var7.getDataType());
- } else if (var1 instanceof NamespaceDeclaration) {
- NamespaceDeclaration var8 = (NamespaceDeclaration)var1;
- } else if (var1 instanceof DataTypeDeclaration) {
- DataTypeDeclaration var9 = (DataTypeDeclaration)var1;
- if (this.isIntrinsicDtName(((BaseDeclaration)var9).getName())) {
- var1.addError(new ParserException(999, "Name should not be an intrinsic datatype name."));
- }
-
- this.checkForErrors(var1, var9.getDataType());
- }
-
- if (var1 == null) {
- }
-
- }
-
- public DataTypeEnumeration getAllTypes() {
- return DataTypeFactory.getTheseTypes(SOX_ALL_TYPES);
- }
-
- public DataTypeEnumeration getSimpleTypes() {
- return DataTypeFactory.getTheseTypes(SOX_SIMPLE_TYPES);
- }
-
- public DataTypeEnumeration getPrimitiveTypes() {
- return DataTypeFactory.getTheseTypes(SOX_ATTR_TYPES);
- }
-
- public DataTypeEnumeration getOtherTypes() {
- Enumeration var1 = super.schema.getDeclarations(Class.forName("com.extensibility.xml.DataTypeDeclaration"));
- return new 1.SOX2DataTypeEnum((SOX2Flavor)null, var1);
- }
-
- private static void loadSoxSourceNames() {
- soxSourceNames = new Hashtable();
-
- for(int var0 = 0; var0 < SOX_ALL_TYPES.length; ++var0) {
- soxSourceNames.put(BaseFlavor.getDisplay(NAME, SOX_ALL_TYPES[var0]), SOX_ALL_TYPES[var0]);
- }
-
- }
-
- public boolean isKnownDisplay(String var1) {
- if (soxSourceNames == null) {
- loadSoxSourceNames();
- }
-
- String var2 = (String)soxSourceNames.get(var1);
- return var2 == null ? false : DataTypeFactory.isKnown(var2);
- }
-
- public DataType createDataTypeFromDisplay(String var1) {
- if (soxSourceNames == null) {
- loadSoxSourceNames();
- }
-
- String var2 = (String)soxSourceNames.get(var1);
- if (var2 == null) {
- var2 = var1;
- }
-
- return DataTypeFactory.createDataType(var2);
- }
-
- public boolean isSupported(String var1) {
- return !var1.equals("GESTALT_LOCAL_TAG") && !var1.equals("GESTALT_EXTENDS") && !var1.equals("GESTALT_MIN_MAX_OCCURS") && !var1.equals("GESTALT_MULTI_INSTANCE_MODULES") && !var1.equals("GESTALT_FACET_DECIMALS") && !var1.equals("GESTALT_FACET_DIGITS") && !var1.equals("GESTALT_FACET_MIN") && !var1.equals("GESTALT_FACET_MAX") && !var1.equals("GESTALT_FACET_MINEX") && !var1.equals("GESTALT_FACET_MAXEX") && !var1.equals("GESTALT_FACET_MAXLENGTH") && !var1.equals("GESTALT_FORBID_ANY_AND_MIXED") && !var1.equals("GESTALT_SECOND_PASS_VALIDATION") && !var1.equals("GESTALT_TYPE_IN_CONTENT_MODEL") ? super.isSupported(var1) : true;
- }
-
- public URI resolveLogicalBySamePrefix(URI var1, boolean var2) throws FileNotFoundException {
- String var3 = super.schema.getURI().toSource();
- String var4 = super.schema.getNamespace() == null ? "" : super.schema.getNamespace().toSource();
- String var5 = var1.toSource();
- String var6 = var1.getFullName();
- if (var5.startsWith("urn") && !(new URI(var6)).equals(new URI(var5))) {
- String var11 = StringUtilities.stripCommonUpTo(var5, var4, ':');
- int var8 = var11.lastIndexOf(36);
- if (var8 >= 0) {
- var11 = var11.substring(0, var8);
- }
-
- var11.replace(':', System.getProperty("file.separator").charAt(0));
- int var9 = var3.lastIndexOf(System.getProperty("file.separator"));
- if (var9 != -1) {
- var11 = String.valueOf(var3.substring(0, var9 + 1)).concat(String.valueOf(var11));
- }
-
- URI var10 = new URI(super.schema.getURI(), var11);
- return super.resolveLogical(var10, var2);
- } else {
- URI var7 = new URI(super.schema.getURI(), var5);
- return super.resolveLogical(var7, var2);
- }
- }
-
- public URI resolveLogical(URI var1, boolean var2) throws FileNotFoundException {
- String var3 = var1.toSource();
- if (!var3.startsWith("urn")) {
- return this.resolveLogicalBySamePrefix(var1, var2);
- } else {
- Vector var4 = super.schema.getSchemaPaths();
- Vector var5 = new Vector();
- if (var4.isEmpty()) {
- return this.resolveLogicalBySamePrefix(var1, var2);
- } else {
- for(int var6 = 0; var6 < var4.size(); ++var6) {
- var5.addElement(new File((String)var4.elementAt(var6)));
- }
-
- DirectorySearchURIDomain var17 = new DirectorySearchURIDomain(var5, "urn");
- Object var7 = null;
-
- try {
- var18 = new com.commerceone.util.net.URI(var1.toSource());
- } catch (MalformedURIException var16) {
- URI var9 = this.resolveLogicalBySamePrefix(var1, var2);
- return var9;
- }
-
- Object var8 = null;
-
- try {
- var20 = var17.open(var18);
- } catch (IOException var15) {
- URI var10 = this.resolveLogicalBySamePrefix(var1, var2);
- return var10;
- }
-
- Object var21 = null;
- URI var23 = null;
-
- do {
- com.commerceone.util.net.URI var19 = var20.getURI();
- if (var19 != null) {
- String var11 = var19.getPath();
- if (var11 != null) {
- try {
- String var22 = FileURIDomain.unescape(var11);
- URI var12 = new URI(new File(var22));
- if (var12.exists()) {
- var23 = var12;
- }
- } catch (IOException var14) {
- URI var13 = this.resolveLogicalBySamePrefix(var1, var2);
- return var13;
- }
- }
- }
- } while((var20 = var20.getNext()) != null && var23 == null);
-
- return var23 == null ? this.resolveLogicalBySamePrefix(var1, var2) : var23;
- }
- }
- }
-
- static {
- SOX_ALL_TYPES = new String[]{DataTypeIntf.BOOLEAN, DataTypeIntf.STRING, DataTypeIntf.URI, DataTypeIntf.NUMBER, DataTypeIntf.R4, DataTypeIntf.R8, DataTypeIntf.I4, DataTypeIntf.I8, DataTypeIntf.I1, DataTypeIntf.DATE, DataTypeIntf.TIME, DataTypeIntf.DATETIME, DataTypeIntf.ID, DataTypeIntf.IDREF, DataTypeIntf.IDREFS, DataTypeIntf.NMTOKEN, DataTypeIntf.NMTOKENS};
- SOX_OTHER_TYPES = new String[]{""};
- SOX_SIMPLE_TYPES = new String[]{DataTypeIntf.BOOLEAN, DataTypeIntf.STRING, DataTypeIntf.URI, DataTypeIntf.NUMBER, DataTypeIntf.R4, DataTypeIntf.R8, DataTypeIntf.I4, DataTypeIntf.I8, DataTypeIntf.I1, DataTypeIntf.DATE, DataTypeIntf.TIME, DataTypeIntf.DATETIME};
- SOX_ATTR_TYPES = new String[]{DataTypeIntf.STRING, DataTypeIntf.ID, DataTypeIntf.IDREF, DataTypeIntf.IDREFS, DataTypeIntf.NMTOKEN, DataTypeIntf.NMTOKENS};
- soxSourceNames = null;
- }
- }
-